package LinkedList;
// 移除链表元素
public class remove_linked_list_elements {
    //链表定义：
    class ListNode{
        int val;
        ListNode next;
        public ListNode(){

        }
        //有参构造
        public ListNode(int val,ListNode next){
            this.val=val;
            this.next=next;
        }
    }
    //给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
    public ListNode removeElements(ListNode head, int val) {
        //如果链表为空
        if(head==null){
            return head;
        }
        //首先遍历链表咯？
        //首先来个虚拟头结点，防止丢失头结点
        ListNode dummy=new ListNode();
        dummy.next=head;
        //来个前节点
        ListNode pre=new ListNode();
        pre=dummy;
        while (head!=null){
            //判断当前节点 是否为val
            if(head.val==val){
                ListNode next=head.next;
                pre.next=next;
                head=head.next;
                continue;
            }
            head=head.next;
            pre=pre.next;
        }
        return dummy.next;
    }
}
